perm filename CREIO[G,BGB] blob sn#053590 filedate 1973-07-16 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00015 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001	   VALID 00015 PAGES
 00003 00002	TITLE CREIO - CRE INPUT OUTPUT SUBROUTINES - BGB - 16 APRIL 1973.
 00004 00003	SUBR(FILNUM)SERIAL.	SETUP FILE-SERIAL-NUMBER-NAME.
 00006 00004	SUBR(TVDSKI)SERIAL		INPUT TV PICTURE FROM DISK FILE.
 00008 00005	SUBR(TVPACK).		PACK TVBUF WITH PICTURE FROM SKY ARRAY.
 00011 00006	SUBR(TVDSKO)  		INPUT TV PICTURE FROM A DISK FILE.
 00013 00007	SUBR(TVXGP)		 VIDEO BUFFER TO XEROX GRAPHICS PRINTER.
 00015 00008	GRAB THE DEVICE.
 00017 00009	SUBR(VICXGP)Q1,Q2	 VIDEO INTENSITY CONTOURS TO XGP.
 00019 00010	
 00020 00011	
 00023 00012	SUBR(CREOUT)		OUTPUT CONTOURS, REGION, EDGE FILE.
 00025 00013	SUBR(CREIN)	 CONTOUR,REGION,EDGE FILE FORMAT INPUT.
 00027 00014	TVIN4.		FOUR BIT TELEVISION INPUT.
 00029 00015	SUBR(TVIN6).		 SIX BIT TELEVISION INPUT.
 00032 ENDMK
⊗;
TITLE CREIO - CRE INPUT OUTPUT SUBROUTINES - BGB - 16 APRIL 1973.

	EXTERN REMAIN,NODCNT,FTVHIS,FTVSIX
	EXTERN VCUT,TVBUF,HISTO,AVAIL2,CRE44,FILM,FLGBGB
	EXTERN HEADER,HISTOG,CHR
	EXTERN DPYBUF,QBLK,DPYIMG
	EXTERN RELLOC,SHRINQ,SKY
	EXTERN FILNAM,EXTION,PPPN,GETFIL
SUBR(FILNUM)SERIAL.	;SETUP FILE-SERIAL-NUMBER-NAME.
BEGIN FILNUM;------------------------------------------------------
	EXTERN FNAME6
	LAC 10,FNAME6↔LAC 1,[POINT 6,10,-1]	;FILM NAME SIXBIT.
	LAC 0,1↔ILDB 2,1↔SKIPE 2↔GO .-3		;SCAN FOR 00.

;CONVERT SERIAL NUMBER TO SIXBIT DECIMAL NUMERAL.
	LACM 1,ARG1↔DAC 1,2↔DAC 1,3↔DAC 1,4↔DAC 1,5
	CAIL 1,=10000↔GO L5
	CAIL 1,=1000↔GO L4
	CAIL 1,=100↔GO L3
	CAIL 1,=10↔GO L2
		 ↔GO L1

L5:	IDIVI 1,=10000↔ADDI 1,20↔IDPB 1,0
L4:	IDIVI 2,=1000 ↔ADDI 2,20↔IDPB 2,0
L3:	IDIVI 3,=100  ↔ADDI 3,20↔IDPB 3,0
L2:	IDIVI 4,=10   ↔ADDI 4,20↔IDPB 4,0
L1:	               ADDI 5,20↔IDPB 5,0
	DAC 10,FILNAM

;TMP EXTENSION AND PPPN.
	LAC[SIXBIT/TMP/]↔DAC EXTION
	DZM EXTION+1
	DZM↔SKIPE FLGBGB↔LAC[SIXBIT/DATBGB/]↔DAC PPPN
	POP1J

BEND FILNUM; BGB 19 APRIL 1973 ------------------------------------
SUBR(TVDSKI)SERIAL		INPUT TV PICTURE FROM DISK FILE.

COMMENT/ Serial -1 asks user for file name. Serial ≥0 attempts
film image XXXX00.TMP input. TVDSKI returns TRUE -1 if image
found or FALSE 0 if image not found./

BEGIN TVDSKI;-----------------------------------------------------

	SKIPL 1,ARG1↔GO[CALL(FILNUM,1)↔GO L1]
L0:	CALL(GETFIL,[SIXBIT/TMP/],[SIXBIT/DATBGB/])
FALSE:	GO[DZM 1↔POP1J]		;RETURN FALSE - NO PICTURE.
L1:	INIT 1,17↔SIXBIT/DSK/↔0↔HALT
	LOOKUP 1,FILNAM↔GO[SKIPGE ARG1↔GO L0↔GO FALSE]

	MOVS PPPN↔MOVMS			;GET FILE SIZE.
	CAIN 24400↔GO L2
	SUBI 200↔DACN
	DIP DUMP2+1
	IN 1,DUMP2↔JFCL			;NON-STANDARD SIZE.
	CALL(TVPACK)
	GO L4

L2:	IN 1,DUMP1↔JFCL			;216 x 288 STANDARD SIZE.
L4:	OUTSTR[ASCIZ"	EOF.
"]↔	RELEASE 1,↔SETO 1,↔POP1J	;RETURN TRUE.

DUMP1:	IOWD 200,HEADER
	IOWD 24200,TVBUF↔0
DUMP2:	IOWD 200,HEADER
	IOWD 24200,SKY↔0

BEND TVDSKI; BGB 6 DECEMBER 1972 ---------------------------------
SUBR(TVPACK).		PACK TVBUF WITH PICTURE FROM SKY ARRAY.
COMMENT/ Take a non-standard size picture from the SKY array and pack
it into the TVBUF. TVPACK loops are for R ← 0 to 215 and for C ← 0 to
287; at each target pixel a check is made to see if there is a source
pixel to be moved./
BEGIN TVPACK;-----------------------------------------------------

	ACCUMULATORS{B,R1,C1,R2,C2,Q0,Q1,Q2}

;READ TV FILE HEADER & MAKE SURE THAT IT IS REASONIBLE.
	SETO↔CAME HEADER↔GO[OUTSTR[ASCIZ/	UNKNOWN, TV FILE FORMAT.
/]↔POP0J]
	LAC HEADER+1↔DAC BYTSIZ#
	LAC HEADER+2↔DAC WWIDTH#
	LAC HEADER+4↔SUB HEADER+3↔AOS↔DAC MROWS#↔LSH -1↔DAC HALFM#
	LAC HEADER+6↔SUB HEADER+5↔AOS↔DAC NCOLS#↔LSH -1↔DAC HALFN#

	LAC R2,HALFM↔SUBI R2,=108
	LAC Q0,R2↔IMUL Q0,WWIDTH
	ADDI Q0,SKY↔CDR 0,HEADER+7↔SUBI 0,200↔ADD Q0,0
	LAC Q2,[POINT 6,TVBUF,-1]
	DZM R1
L0:	DZM C1↔LAC C2,HALFN↔SUBI C2,=144
L1:	DZM B
	SKIPL R2↔CAML R2,MROWS↔GO L2
	SKIPL C2↔CAML C2,NCOLS↔GO L2
	TLNN Q0,-1↔CALL(L3)
	ILDB B,Q1
	LSH B,0
L2:	IDPB B,Q2
	AOS C2↔AOS C1↔CAIE C1,=288↔GO L1
	ADD Q0,WWIDTH↔LAC Q1,Q0
	AOS R2↔AOS R1↔CAIE R1,=216↔GO L0
	POP0J

;COMPUTE SOURCE COLUMN BYTE POINTER, ONCE PER PICTURE.
L3:	LAC 0,C2↔IDIV 0,BYTSIZ↔ADD Q0,0		;WORD.
	IMUL 1,BYTSIZ↔LACI 0,=36↔SUB 0,1	;P-BITS.
	LSH 0,6↔IOR 0,BYTSIZ↔ROT 0,-=12		;S-BITS.
	IOR Q0,0↔LAC Q1,Q0
	LACI 6↔SUB BYTSIZ↔DAP L2-1
	POP0J

BEND TVPACK; BGB 18 APRIL 1973 -----------------------------------
SUBR(TVDSKO)  		INPUT TV PICTURE FROM A DISK FILE.
BEGIN TVDSKO;-----------------------------------------------------

	CALL(GETFIL,[SIXBIT/TMP/],[SIXBIT/DATBGB/])↔POP0J
	INIT 1,17↔SIXBIT/DSK/↔0↔HALT
	ENTER 1,FILNAM↔GO[OUTSTR[ASCIZ/	ENTER FAILED.
/]↔GO .+4]
	LAC[XWD HEADER,HEADER+1]↔DZM HEADER↔BLT HEADER+177
	LAC[XWD HEAD1,HEADER]↔BLT HEADER+7
	OUT 1,DUMARG↔JFCL
	OUTSTR[ASCIZ"	EOF.
"]↔	RELEASE 1,↔POP0J
HEAD1:	-1
	6	; BITS PER BYTE.
	=48	;WORDS PER LINE.
	=20	;FIRST AND LAST ROW.
	=235
	=28
	=315	;FIRST AND LAST COL.
	XWD -=10368,200
DUMARG:	IOWD 24400,HEADER↔0
BEND TVDSKO; BGB 6 DECEMBER 1973 ---------------------------------
SUBR(TVXGP)		 VIDEO BUFFER TO XEROX GRAPHICS PRINTER.
BEGIN TVXGP;------------------------------------------------------
	ACCUMULATORS{S2,S3,I,J,K,Q,P1,P2}
COMMENT/ One to sixteen expansion: (216*4=864) by (288*4=1152).
or 32 words per line. Buffer size (864 lines)*33+1= 28513 words./

;EXPAND CORE FOR XGP BUFFER & CLEAR THE BUFFER.
	LAC 44↔DAC SAV44#↔AOS↔DAC XBUF#↔ADDI =28513+10↔CORE↔GO L5
	CDR 1,XBUF↔DZM(1)↔DIP 1,1↔AOS 1↔CDR 2,44↔BLT 1,(2)

;PUT CONTROL WORDS IN THE 864 ROWS OF THE XGP IMAGE.
	LAC 1,XBUF
	SLACI %↔DAC(1)↔AOS 1		     ;CUT PAPER.
	SLACI =200⊗6↔DAC(1)↔AOS 1	     ;SPACE DOWN 100 LINES.
	LAC[1B11+=192B23+=32]↔LACI 2,=864    ;864 ROWS OF 32 WORDS.
	DAC(1)↔ADDI 1,=33↔SOJG 2,.-2	  
	LAC[5770B11]↔DAC(1)↔AOS 1	     ;SPACE AFTER PICTURE.
	SLACI %↔DAC(1)			     ;CUT PAPER.

;PACK VIDEO BYTES INTO XGP 4 BY 4 BIT ARRAYS.
	LAC P1,[POINT 6,TVBUF,-1]
	LAC P2,XBUF↔ADDI P2,3		;BUFFER POINTER.
	LACI I,=216
L1:	LACI J,=32
L2:	SETZB 0,1↔SETZB 2,3↔LACI K,=9
L3:	ILDB Q,P1↔TRZ Q,3↔ROTC 0,4↔ROTC 2,4
	IOR 0,HTT+0(Q)↔IOR 1,HTT+1(Q)
	IOR 2,HTT+2(Q)↔IOR 3,HTT+3(Q)
	SOJG K,L3
	DAC 0,=00(P2)↔DAC 1,=33(P2)
	DAC 2,=66(P2)↔DAC 3,=99(P2)
	AOS P2↔SOJG J,L2
	ADDI P2,=100↔SOJG I,L1

;GRAB THE DEVICE.
L4:	INIT 1,117
	SIXBIT/XGP/↔0↔GO[OUTSTR[ASCIZ/XGP INIT FAILED.
/]↔	POP0J]
	SETZ↔SEGNUM
	DAC SAVSEG#↔DETSEG
	LOCK

;SLACI -=28516
	LAP XBUF↔SOS↔	LIPI -=7130↔	DAC B1
	ADDI =7130↔	LIPI -=7128↔	DAC B2
	ADDI =7128↔	LIPI -=7128↔	DAC B3
	ADDI =7128↔	LIPI -=7130↔	DAC B4
LL5:
;DAC DUMARG
	OUT 1,B1↔OUTSTR[ASCIZ/	FIRE BUFFER 1 !/]↔CRLF
	OUT 1,B2↔OUTSTR[ASCIZ/	FIRE BUFFER 2 !/]↔CRLF
	OUT 1,B3↔OUTSTR[ASCIZ/	FIRE BUFFER 3 !/]↔CRLF
	OUT 1,B4↔OUTSTR[ASCIZ/	FIRE BUFFER 4 !/]↔CRLF
	UNLOCK
	RELEASE 1,


	LAC SAV44↔CORE
L5:	OUTSTR[ASCIZ/ XGP CORE UUO FAILED.
/]↔	CRLF↔LAC SAVSEG↔ATTSEG↔JFCL↔POP0J


;HALF TONE TABLE.
HTT:	6↔7↔7↔6↔	6↔6↔7↔6↔	6↔6↔6↔6↔	6↔6↔6↔6
	6↔6↔6↔4↔	4↔6↔6↔4↔	4↔6↔6↔4↔	4↔4↔6↔4
	4↔4↔4↔4↔	4↔4↔4↔4↔	0↔4↔4↔4↔	4↔4↔4↔0
	0↔4↔4↔0↔	0↔0↔4↔0↔	0↔0↔4↔0↔	0↔0↔0↔0
DUMARG:0↔0
B1:0↔0
B2:0↔0
B3:0↔0
B4:0↔0
BEND;1/19/73-------------------------------------------------------
SUBR(VICXGP)Q1,Q2	 VIDEO INTENSITY CONTOURS TO XGP.
BEGIN VICXGP;-----------------------------------------------------
	ACCUMULATORS{S2,S3,I,J,K,Q,P1,P2}
	EXTERN VSEG,HSEG,TVBUF,THRESH,PACXOR
;BIT POSITIONS OF THE ARGUMENTS Q1 & Q2 ENABLE INTENSITY CUTS.
	LAC 1,ARG2↔DAC 1,Q0#
	LAC 1,ARG1↔ANDCMI 1,377↔DAC 1,Q1#
	DZM CUT#
;CLEAR THE TMP AREA FOR VSEG-HSEG ACCUMULATION.
	LAC[XWD SKY,SKY+1]↔DZM SKY↔BLT SKY+=3500

;FIND AN INTENSITY CONTOUR ENABLE BIT.
LL0:	LAC 0,Q0↔LAC 1,Q1
LL1:	AOS 2,CUT↔LSHC 0,1↔JUMPL 0,LL2
	CAMN 0,1↔JUMPE 0,LL5↔GO LL1

;THRESHOLD THE TVBUF
LL2:	DAC 0,Q0↔DAC 1,Q1
	CALL(THRESH,CUT)
	CALL(PACXOR)
	LACI 1,=3457↔LAC VSEG(1)↔IORM SKY(1)↔SOJG 1,.-2
	GO LL0

LL5:	LAC[XWD SKY,VSEG]↔BLT VSEG+=3456

;PACK VSEG'S AND HSEG'S INTO THE TVBUF.
	LAC[XWD LL3,2]↔BLT 14↔GO 3
LL3:	=62208		;2
	ILDB 0,11	;3
	ILDB 1,12	;4	;GET HSEG BIT.
	 DPB 1,14	;5	;COMBINE THEM.
	IDPB 0,13	;6	;PACK THEM INTO TVBUF.
	SOJG 2,3	;7
	GO LL4		;10
	POINT 1,VSEG	;11
	POINT 1,HSEG	;12
	POINT 6,TVBUF	;13
	POINT 1,0,34	;14
LL4:

;EXPAND CORE FOR XGP BUFFER & CLEAR THE BUFFER.
	LAC 44↔DAC SAV44#↔AOS↔DAC XBUF#↔ADDI =28513+10↔CORE↔GO L5
	CDR 1,XBUF↔DZM(1)↔DIP 1,1↔AOS 1↔CDR 2,44↔BLT 1,(2)

;PUT CONTROL WORDS IN THE 864 ROWS OF THE XGP IMAGE.
	LAC 1,XBUF
	SLACI %↔DAC(1)↔AOS 1		     ;CUT PAPER.
	SLACI =200⊗6↔DAC(1)↔AOS 1	     ;SPACE DOWN 100 LINES.
	LAC[1B11+=192B23+=32]↔LACI 2,=864    ;864 ROWS OF 32 WORDS.
	DAC(1)↔ADDI 1,=33↔SOJG 2,.-2	  
	LAC[5770B11]↔DAC(1)↔AOS 1	     ;SPACE AFTER PICTURE.
	SLACI %↔DAC(1)			     ;CUT PAPER.

;PACK VIDEO BYTES INTO XGP 4 BY 4 BIT ARRAYS.
	LAC P1,[POINT 6,TVBUF,-1]
	LAC P2,XBUF↔ADDI P2,3		;BUFFER POINTER.
	LACI I,=216
L1:	LACI J,=32
L2:	SETZB 0,1↔SETZB 2,3↔LACI K,=9
L3:	ILDB Q,P1↔LSH Q,2
	CAIN J,=32↔GO[CAIN K,9↔IORI Q,4↔GO .+1]
	CAMN J,K↔GO[CAIN J,1↔LACI Q,4↔GO .+1]
	CAIE I,=216↔CAIN I,1↔IORI Q,8
	ROTC 0,4↔ROTC 2,4
	IOR 0,HTT+0(Q)↔IOR 1,HTT+1(Q)
	IOR 2,HTT+2(Q)↔IOR 3,HTT+3(Q)
	SOJG K,L3
	DAC 0,=00(P2)↔DAC 1,=33(P2)
	DAC 2,=66(P2)↔DAC 3,=99(P2)
	AOS P2↔SOJG J,L2
	ADDI P2,=100↔SOJG I,L1

;GRAB THE DEVICE.
L4:	INIT 1,17↔SIXBIT/XGP/↔0↔GO[OUTSTR[ASCIZ/XGP INIT FAILED.
/]↔	POP2J]↔SETZ↔SEGNUM↔DAC SAVSEG#↔DETSEG
	SLACI -=28516↔LAP XBUF↔SOS↔DAC DUMARG
	OUT 1,DUMARG↔RELEASE 1,↔LAC SAV44↔CORE
L5:	OUTSTR[ASCIZ/ XGP CORE UUO FAILED.
/]↔	CRLF↔LAC SAVSEG↔ATTSEG↔JFCL↔POP2J
;HALF TONE TABLE.
HTT:	0↔0↔0↔0↔	8↔8↔8↔8↔	17↔0↔0↔0↔	17↔8↔8↔8
DUMARG:0↔0
BEND VICXGP; BGB 6 MAY 1973 ---------------------------------------
SUBR(CREOUT)		OUTPUT CONTOURS, REGION, EDGE FILE.
BEGIN CREOUT;-----------------------------------------------------
	CALL(SHRINQ)
	CALL(GETFIL,[SIXBIT/CRE/],[0])↔POP0J
	LACN FILM
	CALL(RELLOC,0)

;SETUP DUMP OUT ARGUMENT  IOWD.
	LAC FILM↔SUB@AVAIL2
	LACM 1,0↔MOVSS
	LAP CRE44↔DAC OUTARG
	LAC@FILM↔DAC TMP#↔DAC 1,@FILM	;FILE SIZE IN WORDS.

;FILE OUTPUT RITUAL.
	LAC@AVAIL2↔SUB FILM↔DAC@AVAIL2
	INIT 1,17↔SIXBIT/DSK/↔0↔HALT
	ENTER 1,FILNAM
	GO[OUTSTR[ASCIZ/	ENTER FAILED.
/]↔GO .+4]
	OUT 1,OUTARG↔JFCL
	OUTSTR[ASCIZ"	EOF.
"]↔	RELEASE 1,
	DZM FILNAM↔SETZ EXTION↔DZM EXTION+1↔DZM PPPN
	CALL(RELLOC,FILM)
	LAC TMP↔DAC@FILM
	LAC@AVAIL2↔ADD FILM↔DAC@AVAIL2
	POP0J
OUTARG:	0↔0
BEND CREOUT; BGB 6 DECEMBER 1972 ---------------------------------
SUBR(CREIN)	 CONTOUR,REGION,EDGE FILE FORMAT INPUT.
BEGIN CREIN;------------------------------------------------------

	CALL(GETFIL,[SIXBIT/CRE/],[0])↔POP0J
	INIT 1,17↔SIXBIT/DSK/↔0↔HALT
	LOOKUP 1,FILNAM↔GO[RELEASE 1,↔GO CREIN]

	DZM QBLK
	LAC PPPN↔LAP FILM↔SOS↔DAC INARG		;IOWD

	MOVS PPPN↔MOVMS↔ADD FILM
	IORI 1777↔CAMG 44↔GO L1
	CALLI 11↔HALT
	LAC 44↔AOS↔SUB FILM
	DIVI 7↔DAC 1,REMAINDER
L1:	IN 1,INARG
	OUTSTR[ASCIZ"	EOF.
"]↔	RELEASE 1,

	CDR@AVAIL2↔ADD FILM↔DAC@AVAIL2↔DZM@
	DIP↔AOS↔LAC 1,44↔BLT(1)		       ;CLEAR EMPTY AREA.
	CALL(RELLOC,FILM)

;RESET AVAIL2 LIST.
	LAC 1,@AVAIL2↔LAC 2,44
	LIPI 1,NODSIZ(1)↔GO L6
L5:	HLRZM 1,(1)↔ADD 1,[XWD NODSIZ,NODSIZ]
L6:	CAILE 2,NODSIZ+NODSIZ-1(1)↔GO L5
	SUBI 2,NODSIZ-1(1)↔DAC 2,REMAINDER
	POP0J
INARG:	0↔0
BEND CREIN; BGB 28 JANUARY 1973 ----------------------------------
;TVIN4.		FOUR BIT TELEVISION INPUT.
SUBR(TVIN4)------------------------------------------------------
BEGIN TVIN4
	LAC 44↔DAC TMP44#↔AOS↔DAP TVPTR
	ADDI=6912↔CORE↔POP0J
L0:	INIT 17,17↔SIXBIT/TV/↔0
	GO[OUTSTR[ASCIZ"CAN'T INIT TV."]↔INCHRW↔GO .-3]
	DZM TVERR↔INPUT 17,TVPTR↔RELEASE 17,

;REPORT ON THE ERROR BITS AND RETAKE IF NECESSARY;
	LAC 1,TVERR
	TRNE 1,100000↔OUTSTR[ASCIZ/TV PARITY ERROR.
/]↔	TRNE 1,000040↔OUTSTR[ASCIZ/TV DATA MISS.
/]↔	TRNE 1,000020↔OUTSTR[ASCIZ/TV NON EX MEM.
/]↔	TRNE 1,100060↔JRST L0
	TIMER↔DAC TVTIME#
	DATE↔DAC TVDATE#
	OUTSTR[ASCIZ/AKEN./]
	LAC[XWD HISTO,HISTO+1]		;CLEAR THE HISTOGRAM.
	DZM HISTO↔BLT HISTO+77

;CONVERT FROM GREY CODE TO GRAY CODE.
	LAC 16,[XWD L,0]↔BLT 16,12
	LAP TVPTR↔GO 4

L:	POINT 4,0,-1↔		FROM←←0
	POINT 6,TVBUF,-1↔	TO←←1
	=62208	↔		CNT←←2
	0	↔		BYT←←3
	ILDB BYT,FROM		;4
	LAC BYT,GRAY(BYT)	;3
	LSH BYT,2		;6
	AOS HISTO(BYT)		;7
	IDPB BYT,TO		;8
	SOJG CNT,4		;9
	GO .+1			;12
	LAC TMP44↔CORE↔HALT↔POP0J

BEND TVIN4; BGB 14 DECEMBER 1972 ---------------------------------

TVPTR:	XWD -=6912,0	↔ INTERN TVPTR
TVCLIP:	701002		;BCLIP=7 TCLIP=0 CAM=1.
INTERN TVCLIP
TVYXW:	BYTE(9)50,34,40
TVERR:	0
GRAY:	OCT 12,13,11,10,15,14,16,17,5,4,6,7,2,3,1,0
SUBR(TVIN6).		 SIX BIT TELEVISION INPUT.
BEGIN TVIN6;-----------------------------------------------------
	LAC 44↔DAC TMP44#↔AOS↔DAP TVPTR
	ADDI=6912*4↔CORE↔POP0J
L0:	INIT 17,17↔SIXBIT/TV/↔0
	GO[OUTSTR[ASCIZ"CAN'T INIT TV."]↔INCHRW↔GO .-3]
	DZM TVERR6#↔PUSH P,TVCLIP

	LACI 76↔DPB[POINT 6,TVCLIP,23]		;TAKE CLIPS 76.
	LAC TVPTR↔LIPI 440400↔DAC P1#
L1:	DZM TVERR↔INPUT 17,TVPTR↔LAC TVERR
	IORM TVERR6↔TRNE 100060↔GO L1

	LACI 54↔DPB[POINT 6,TVCLIP,23]		;TAKE CLIPS 54.
	LACI =6912↔ADDB TVPTR↔LIPI 440400↔DAC P2#
L2:	DZM TVERR↔INPUT 17,TVPTR↔LAC TVERR
	IORM TVERR6↔TRNE 100060↔GO L2

	LACI 32↔DPB[POINT 6,TVCLIP,23]		;TAKE CLIPS 32.
	LACI =6912↔ADDB TVPTR↔LIPI 440400↔DAC P3#
L3:	DZM TVERR↔INPUT 17,TVPTR↔LAC TVERR
	IORM TVERR6↔TRNE 100060↔GO L3

	LACI 10↔DPB[POINT 6,TVCLIP,23]		;TAKE CLIPS 10.
	LACI =6912↔ADDB TVPTR↔LIPI 440400↔DAC P4#
L4:	DZM TVERR↔INPUT 17,TVPTR↔LAC TVERR
	IORM TVERR6↔TRNE 100060↔GO L4
	POP P,TVCLIP↔RELEASE 17,

;REPORT ON THE ERROR BITS.
	LAC 1,TVERR6
	TRNE	1,100000↔OUTSTR[ASCIZ/TV PARITY ERROR.
/]↔	TRNE	1,40	↔OUTSTR[ASCIZ/TV DATA MISS.
/]↔	TRNE	1,20	↔OUTSTR[ASCIZ/TV NON EX MEM.
/]↔	TIMER↔DAC TVTIME#
	DATE↔DAC TVDATE#
	LAC[XWD HISTO,HISTO+1]↔DZM HISTO↔BLT HISTO+77
	OUTSTR[ASCIZ/AKEN./]
;CONVERT FROM GREY CODE TO GRAY CODE.
	LAC[POINT 6,TVBUF,-1]↔DAC P5#
	LAC[XWD L,3]↔BLT 16↔LACI =62208↔GO 3

;SIX BIT AC-LOOP.
L:	ILDB 1,P1↔LAC 2,GRAY(1)
	ILDB 1,P2↔ADD 2,GRAY(1)
	ILDB 1,P3↔ADD 2,GRAY(1)
	ILDB 1,P4↔ADD 2,GRAY(1)
	IDPB 2,P5↔AOS  HISTO(2)
	SOJG 0,3↔GO .+1
	LAC TMP44↔CORE↔HALT↔POP0J
BEND TVIN6; BGB 14 DECEMBER 1972 ---------------------------------
END